package com.dy.design_pattern_study.observer_mode.dome3.notifier_code;

import com.dy.design_pattern_study.observer_mode.dome3.observer_code.Observer;

import java.util.ArrayList;
import java.util.List;

/**
 * @CreateBy zhangdingyi
 * @Date 2023-04-03
 * @Content 主题或抽象通知者
 */
public abstract class Subject {

    private List<Observer> observers = new ArrayList<>();

    //增加观察者 --看这里，添加类的时候，是以抽象观察者类，也就是不管其有多少子类都能 适应
    public void Attach(Observer observer) {
        observers.add(observer);
    }

    //移除观察者
    public void Detach(Observer observer) {
        observers.remove(observer);
    }

    //通知
    public void Notify() {
        for (Observer observer : observers) {
            observer.Update();
        }
    }

}


